package com.aula02.jdbc.crud;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.aula02.jdbc.conexao.Conexao;

public class Crud {

	private Connection connection;
	
	public void inserirCliente(String nomeCliente, String tipo, String cpfCnpj){
		try {
			PreparedStatement ps = connection.prepareStatement("INSERT INTO CLIENTES " +
															   "(nome,tipo,documento) " +
															   "VALUES (?,?,?)");
			ps.setString(1, nomeCliente);
			ps.setString(2, tipo);
			ps.setString(3, cpfCnpj);
			ps.execute();
			System.out.println("Cliente inserido.");
		} catch (SQLException e) {
			System.out.println("Falha ao inserir dados");
		}
	}
	
	public void atualizarCliente(Integer codigo,String nomeCliente, String tipo, String cpfCnpj){
		try {
			PreparedStatement ps = connection.prepareStatement("UPDATE CLIENTES " +
															   "SET nome = ? ," +
															   "    tipo = ? ," +
															   "    documento = ? " +
															   "WHERE " +
															   "	codigo = ?");
			ps.setString(1, nomeCliente);
			ps.setString(2, tipo);
			ps.setString(3, cpfCnpj);
			ps.setInt(4, codigo);
			ps.execute();
			System.out.println("Cliente alterado.");
		} catch (SQLException e) {
			System.out.println("Falha ao alterar dados");
		}
		
	}
	
	public void removerCliente(Integer codigo){
		try {
			PreparedStatement ps = connection.prepareStatement("DELETE FROM CLIENTES " +
															   "WHERE codigo = ?");
			ps.setInt(1, codigo);
			ps.execute();
			System.out.println("Cliente removido.");
		} catch (SQLException e) {
			System.out.println("Falha ao remover dados");
		}
	}
	
	
	public void leDados(){
		try {
			PreparedStatement ps = connection.prepareStatement("SELECT * from CLIENTES");
			ResultSet rs = ps.executeQuery();
			
			while (rs.next()){
				System.out.print("Cod: "+rs.getString(1));
				System.out.println(" Nome: "+rs.getString(2));
			}
			
			rs.close();
			ps.close();
			
		} catch (SQLException e) {
			System.out.println("Falha ao recuperar dados");
		}
	}
	
	public Crud(Connection connection){
		this.connection = connection;
	}
	
	public static void main(String args[]){
		Conexao conexao = new Conexao();
		Crud crud = new Crud(conexao.conectar("postgres", "postgres", "localhost", "exemplo", 5432));
//		crud.inserirCliente("Williams", "F","000");
//		crud.leDados();
//		crud.atualizarCliente(1, "Will S/A", "J", "22922");
		crud.removerCliente(3);
		
	}
}
